package com.srcptit.java.training.kienbd.btvn1;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;

public class Bai3Sothuannghich {
        public static void main(String[] args) throws Exception {
            // Sử dụng Buffered đọc file.
            BufferedReader bufr = new BufferedReader(new FileReader("data3.txt"));   
            
            // Kiểm tra ngoại lệ.  
            try {
                // Kiểm tra file trống.
                if( bufr.ready()==false )    throw new myEx1();// Bắt lỗi file trống  
                
                // Đọc dữ liệu từ file.
                String dataout = bufr.readLine();
                
                // Kiểm tra Xâu rỗng.
                if( dataout==null )          throw new myEx2();//Bắt lỗi xâu rỗng.
                
                System.out.println("Number in file : "+dataout);
                long n = Long.parseLong(dataout);
                if( n<0 )                    throw new myEx3();
                
                // Xét số thuận nghịch.
                SoThuanNghich(n);
            }catch(myEx1 e) {
                System.out.println("Error! File is empty.");
            }catch(myEx2 e) {
                System.out.println("Error! String is empty.");
            }catch(NumberFormatException e) {
                System.out.println("Error! Data styte is wrong.");
            }catch(myEx3 e) {
                System.out.println("Error! It is negative.");
            }catch(Exception e) {
                System.out.println("Error! Input again, please.");
            }            
        }
        static void SoThuanNghich(long n) throws IOException{
            // Sử dụng Buffered ghi file.
            BufferedWriter bufw = new BufferedWriter(new FileWriter("result3.txt"));  
            
            long m = n;
            long sodao = 0;// Số đảo ngược của n.
            
            while(m>0) {
                sodao = sodao*10 + m%10;
                m = m/10;
            }
            if( sodao==n )  bufw.write(n+" is the reversible");
            else            bufw.write(n+" is not the reversible.");
            
            // Kết thúc ghi file
            bufw.close();
        }
    }